package com.liu.wrod.utils;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.*;
import java.util.Map;

public class WordUtil {
    //配置信息,代码本身写的还是很可读的,就不过多注解了
    private static Configuration configuration = null;
    // 这里注意的是利用WordUtils的类加载器动态获得模板文件的位置
    private static final String templateFolder = WordUtil.class.getClassLoader().getResource("template").getPath();

    static {
        configuration = new Configuration();
        configuration.setDefaultEncoding("utf-8");
        try {
            System.out.println(templateFolder);
            configuration.setDirectoryForTemplateLoading(new File(templateFolder));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * @param dataMap word文档中参数
     * @param wordName 为模板的名字  例如xxx.ftl
     * @param fileName 是word 文件的名字 格式为："xxxx.doc"
     * @throws IOException
     */
    public static void createDoc(Map<?, ?> dataMap,String wordName, String fileName) throws IOException {
        Template template = configuration.getTemplate(wordName);
        try {
            // 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开
            Writer writer = new OutputStreamWriter(new FileOutputStream(fileName), "utf-8");
            template.process(dataMap, writer);
            writer.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}
